<?php

namespace login\controller;                                                                 //<- Ny egen file ->

//require_once("./login/model/NewUserModel.php");
require_once("./login/model/UserList.php");
require_once("./login/model/UserCredentials.php");
require_once("./login/model/UserName.php");
require_once("./login/model/Password.php");

class RegisterNewUserController {                                                          //<----Skapar en ny class och allt innehåll  Layla

//	public function __construct() {
 //       $this->modelNewUser = new \login\model\NewUserModel();
//	}


	public function getNewRegisteredUserName(\application\view\View $view) {             //<-------tar in view object -------------------------------------
        if(isset($_POST['LoginView::Username'])) {                      //<--- om användaren har klickat på registrerar knappen och formuläret är skickat då körs denna if satts
            $username = $_POST['LoginView::Username'];
            $password = $_POST['LoginView::Password'];                  // $_post skall ligga i view, har html,strängberoende finns, sen valideringen ska ligga i modelen
            $retypedPassword = $_POST['LoginView::RetypedPassword'];    // men eftersom Toll sa att vi skall skita i kodkvaliten så sket jag i det och försökte lösa uppgiften

            // VALIDERING GÖRS
            if (strlen($username) < 3) {
                $message = "Användarnamnet har för få tecken. Minst 3 tecken";
                if (strlen($password) < 6) {
                    $message .=  "<br>Lösenordet har för få tecken. Minst 6 tecken";
                } else if ($password != $retypedPassword) {
                        $message .=  "<br>Lösenorden matchar inte!";
                }

            } else if ($username=="Admin") {
               $message =  "Användarnamnet redan upptaget!";
            } else if ($password != $retypedPassword)  {
                $message =  "Lösenorden matchar inte!";
            }  else if (strlen($password) < 6) {
                $message =  "Lösenordet har för få tecken. Minst 6 tecken";
            } else if (preg_match("/<[^<]+>/",$username,$m) == 1) {                 //<-preg_match() inbyggd metod som kollar regEx
               $message =  "Användarnamnet innehåller ogiltiga tecken!";
               $username = strip_tags($username);                                   //<-strip_tags() inbyggd metod som plockar bort ex html tagar i användarnamn fältet i formuläret
            } else {
                $message ="";
            }

            $view->newUserName($username);                              //<- view objectet som togs in funktionen anropar nu en annan funktion i view.php och skickar med vårt användarnamn

           // så om användaren inte fastnat i nån av valideringen ovan kommer man till if sattsen. om allt är rätt ifyllt körs if satsen
            if ($message == "" && $username != "" && $password != "") {
                $_SESSION['registeredUserOk'] = true;                   //<- sessions kakor skapas  // här fylls den med true om det är en lyckad registrering
                $_SESSION['registeredNewUser'] = $username;             // här fylls den med usernamn alltså användarnamnet som registrerats



                $newUserName = new \login\model\UserName($username);    // skapar nytt object skickar med en sträng usernamn till dess construktor funktion
                $newPassword = \login\model\Password::fromCleartext($password);         // tagit ex från Toll kod i Userlist.php detta funkar men inte helt 100 vad som sker
                $newUser = \login\model\UserCredentials::create( $newUserName, $newPassword);       // object skapas men inte utifrån new operatorn !!  Nytt object skapas utifrån create funktionen och skickar med 2 object in i den funktionen

                $this->userList = new \login\model\UserList();          // skapar nytt object utifrån en class som Toll skapat
                $this->userList->update($newUser);            // object anropar update funktion skickar med newUser objectet/ update lägger till nya användare


            } else {
                    $_SESSION['registeredUserOk'] = false;  // om if sattsen är true körs koden ovan, annars om det är flae körs denna else sats.
            }                                               // om det blir false har användaren inte matat in rätt uppgifter när de skulle registrera en ny användare

            return $message;                // retunerar felmedelande nån av de ovan i valideringen

        } else {
                return "";          //om användaren inte matat in något då retunerar den blankt.
        }

	}

}
